# 函数 bin()：获取整数的二进制形式
print(bin(2))  # 0b10
print(bin(3))  # 0b11
print(bin(4))  # 0b100

print("=" * 100)

# 按位与：只有都相同位的值均为1的时候才是1


# 011 & 010 = 010
# 011
# 010
# 010
print(3 & 2)  # 2
# 011 & 100 = 000
# 011
# 100
# 000
print(3 & 4)  # 0

print("=" * 100)

# 按位或：只有都相同位的值任意一个为1则为1

# 011
# 010
# 011
print(3 | 2)  # 3
# 011
# 100
# 111
print(3 | 4)  # 7

print("=" * 100)

# 按位非：按位取反,会涉及到补码的知识
# 010
# ~
# 101
print(~2)  # -3

# 011
# ~
# 100
print(~3)  # -4

# 100
# ~
# 011
print(~4)  # -5

print("=" * 100)

# 按位异或：相同位置的值不一样的时候取1，否则为0

# 011
# 010
# 001
print(3 ^ 2)  # 1

print("=" * 100)

print(bin(8))  # 0b1000

# 左移 <<

# 把 8 左移 2 位
# 01000
# 0100000
print(8 << 2)  # 32
print(8 << 3)  # 64

print("=" * 100)

# 右移 >>

# 把 8 右移 2 位
# 01000
# 00010
print(8 >> 2)  # 2

# 把 8 右移 3 位
# 01000
# 00001
print(8 >> 3)  # 1
print(8 >> 4)  # 0
print(8 >> 300)  # 0

print(bin(9))  # 0b1001
# 将 9 右移 2 位
# 1001
# 0010
print(9 >> 2)  # 2
